package com.keller;

import android.os.AsyncTask;

import com.keller.utils.LogUtils;

/**
 * 用途：
 * 作者： wangkangle
 * Email: wkl_2052@qq.com
 * weixin: feimeng16
 * 版本：1.0
 * 创建日期：KangLe on 2017/6/29 20:41
 */
/**
 * AsyncTask定义了三种泛型类型 Params，Progress和Result。

     Params 启动任务执行的输入参数，比如HTTP请求的URL。
     Progress 后台任务执行的百分比。
     Result 后台执行任务最终返回的结果，比如String。
 */
public class MyTask extends AsyncTask<Integer, Integer, String>  {


    public MyTask() {
        LogUtils.d("MyTask creat");
    }


    //该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置,用于在执行后台任务前做一些UI操作
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        LogUtils.d("MyTask onPreExecute");
    }
    //执行完后台任务后会回调该方法，用于更新UI,显示结果处理逻辑等其他操作
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        LogUtils.d("MyTask onPostExecute：" + s);
    }
    //onProgressUpdate方法用于更新进度信息
    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        LogUtils.d("MyTask onProgressUpdate:" + values[0]);
    }


    //onCancelled方法用于在取消执行中的任务时更改UI
    @Override
    protected void onCancelled() {
        super.onCancelled();
        LogUtils.d("MyTask onCancelled");
    }

    @Override
    protected String doInBackground(Integer... integers) {

        LogUtils.d(integers[0] + "    "  + integers[1] + "   "  + integers[2]);

        LogUtils.d("MyTask doInBackground");
        for (int i = 0;i<10;i++){
            try {
                Thread.sleep(1000);
                LogUtils.d("MyTask doInBackground .." + i);
                publishProgress(i);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return "我是任务结果";
    }
}
